#!/usr/bin/env bash

# Short-Description: Protect your privacy online and access media content with no regional restrictions. Strong encryption and no-log policy with 3000+ servers in 60+ countries.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

BASE=nordvpn

DAEMON=/usr/sbin/${BASE}d
PID=/var/run/$BASE.pid
SOCK=/run/$BASE/${BASE}d.sock
SOCKDIR=/run/$BASE

create_socket_dir() {
  if [[ -d $SOCKDIR ]]; then
    return
  fi
  mkdir -m 0770 $SOCKDIR
  chown root:$BASE $SOCKDIR
}

checkuser() {
    status=0
    for u in $(who | awk '{print $1}' | sort | uniq)
    do
          if [ "$u" == "$1" ]; then
                return 0
	  fi
    done
    return 1
}
#
# Function that starts the daemon
#
nordvpnd_start()
{
  checkuser
  create_socket_dir
  rm -rf $SOCK
  if [ -s $PID ]; then
    echo "$BASE is already running: $(cat $PID)"
    exit 1
  fi

  if [ -x $DAEMON ]; then
    echo "Starting $BASE"
    sleep 1
    # $DAEMON start-stop-daemon --start --quiet -g "nordvpn" --pidfile $PID --exec $DAEMON
    $DAEMON > /dev/null &
    pidof $DAEMON > $PID
    sleep 10
    if [ -S "$SOCK" ]; then
      echo "$BASE has been started."
    else
      echo "$BASE failed to start. Please restart the daemon."
    fi
  fi
}

#
# Function that stops the daemon
#
nordvpnd_stop()
{
  if [ -s $PID ]; then
    echo "Stopping $BASE"
    sleep 1
    kill $(cat $PID)
    rm -rf $PID $SOCK
    sleep 1
    echo "$BASE has been stopped."
  else
    echo "$BASE is not running."
  fi
}

#
# Function that restarts the daemon
#
nordvpnd_restart()
{
  nordvpnd_stop
  sleep 1
  nordvpnd_start
}

#
# Function that shows the current status of the daemon
#
nordvpnd_status()
{
  if [ -s $PID ]; then
    echo "$BASE is running: $(cat $PID)"
  else
    echo "$BASE is not running."
  fi
}


case "$1" in
  start)
    nordvpnd_start
    ;;
  stop)
    nordvpnd_stop
    ;;
  restart)
    nordvpnd_restart
    ;;
  status)
    nordvpnd_status
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac
